package jp.co.neosystem.adwg.neodiary.activity;

import static jp.co.neosystem.adwg.neodiary.util.Constants.INTENT_KEY_EDITTEXT_CONTENT;
import static jp.co.neosystem.adwg.neodiary.util.Constants.INTENT_KEY_EDITTEXT_DATE;
import static jp.co.neosystem.adwg.neodiary.util.Constants.INTENT_KEY_EDITTEXT_TITLE;
import jp.co.neosystem.adwg.neodiary.R;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

/**
 * 詳細表示画面用Activity
 * 
 * @author NEOSystem
 */
public class DetailActivity extends Activity
{
	/** 編集ボタン */
	private Button buttonEdit;
	/** 消去ボタン */
	private Button buttonDelete;
	/** 戻るボタン */
	private Button buttonBack;
	/** 日付テキストビュー */
	private TextView textViewDate;
	/** タイトルテキストビュー */
	private TextView textViewTitle;
	/** 内容テキストビュー */
	private TextView textViewContent;

	/**
	 * onCreateメソッド
	 * 
	 * @param savedInstanceState
	 */
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.detail);

		// 各ウィジェットのインスタンス取得
		buttonEdit = (Button) findViewById(R.id.buttonEdit);
		buttonDelete = (Button) findViewById(R.id.buttonDelete);
		buttonBack = (Button) findViewById(R.id.buttonBack);
		textViewDate = (TextView) findViewById(R.id.textViewDate);
		textViewTitle = (TextView) findViewById(R.id.textViewTitle);
		textViewContent = (TextView) findViewById(R.id.textViewContent);

		// 各ボタンのリスナーセット
		buttonEdit.setOnClickListener(new OnClickListener4ButtonEdit());
		buttonDelete.setOnClickListener(new OnClickListener4ButtonDelete());
		buttonBack.setOnClickListener(new OnClickListener4ButtonBack());

		// 遷移元画面からのインテントの内容を取得
		Intent intent = getIntent();
		textViewDate.setText(intent.getStringExtra(INTENT_KEY_EDITTEXT_DATE.toString()));
		textViewTitle.setText(intent.getStringExtra(INTENT_KEY_EDITTEXT_TITLE.toString()));
		textViewContent.setText(intent.getStringExtra(INTENT_KEY_EDITTEXT_CONTENT.toString()));
	}

	/**
	 * 編集ボタン用クリックリスナー
	 * 
	 * @author NEOSystem
	 */
	private class OnClickListener4ButtonEdit implements OnClickListener
	{
		/**
		 * クリック時処理
		 * 
		 * @param view
		 */
		public void onClick(View view)
		{
			String date = textViewDate.getText().toString();
			String title = textViewTitle.getText().toString();
			String content = textViewContent.getText().toString();

			Intent intent = new Intent(DetailActivity.this, EditActivity.class);
			intent.putExtra(INTENT_KEY_EDITTEXT_DATE.toString(), date);
			intent.putExtra(INTENT_KEY_EDITTEXT_TITLE.toString(), title);
			intent.putExtra(INTENT_KEY_EDITTEXT_CONTENT.toString(), content);
			startActivity(intent);
		}
	}

	/**
	 * 消去ボタン用クリックリスナー
	 * 
	 * @author NEOSystem
	 */
	private class OnClickListener4ButtonDelete implements OnClickListener
	{
		/**
		 * クリック時処理
		 * 
		 * @param view
		 */
		public void onClick(View view)
		{
			OnClickListener4ConfirmDialog listener = new OnClickListener4ConfirmDialog();

			// TODO 未実装
			AlertDialog.Builder builder = new AlertDialog.Builder(view.getContext());
			builder.setTitle(R.string.confirm_dialog_title_delete);
			builder.setMessage(R.string.confirm_dialog_message_delete);
			builder.setPositiveButton("はい", listener);
			builder.setNegativeButton("いいえ", listener);
			builder.show();
		}
	}

	/**
	 * 戻るボタン用クリックリスナー
	 * 
	 * @author NEOSystem
	 */
	private class OnClickListener4ButtonBack implements OnClickListener
	{
		/**
		 * クリック時処理
		 * 
		 * @param view
		 */
		public void onClick(View view)
		{
			finish();
		}
	}

	/**
	 * 確認ダイアログ用クリックリスナー
	 * 
	 * @author NEOSystem
	 */
	private class OnClickListener4ConfirmDialog implements DialogInterface.OnClickListener
	{
		/**
		 * クリック時処理
		 * 
		 * @param dialog
		 * @param which
		 */
		public void onClick(DialogInterface dialog, int which)
		{
			switch (which)
			{
				case DialogInterface.BUTTON1:
					Toast.makeText(DetailActivity.this, "はい", Toast.LENGTH_SHORT);
					break;
				case DialogInterface.BUTTON2:
					Toast.makeText(DetailActivity.this, "はい", Toast.LENGTH_SHORT);
					break;
				default:
					Toast.makeText(DetailActivity.this, "(・ω・)", Toast.LENGTH_SHORT);
			}

			dialog.dismiss();
		}
	}
}